]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionUtils: Slightly optimize current extension lookup
authorFlorian Müllner <fmuellner@gnome.org>
Sun, 9 Jul 2023 23:20:53 +0000 (01:20 +0200)
committerMarge Bot <marge-bot@gnome.org>
Sat, 15 Jul 2023 11:07:12 +0000 (11:07 +0000)
When looking for a directory name that matches the extension UUID,
we can just as well use GLib's dirname()/basename() functions
instead of wrapping the path in a GFile.

We also know that the original path corresponds to a regular file
and not a directory, so rearrange the loop to avoid a lookup that
is guaranteed to fail.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2832>

js/misc/extensionUtils.js

index c60c4520c104ee4e8c97b8b6c553bcdf7ed56975..f04d2a06b90ef27efd00e2f178f99f16432aa4e0 100644 (file)
@@ -98,17 +98,18 @@ function getCurrentExtension() {
     //
     // We don't have to care about the exact composition, all we need
     // is a string that can be traversed as path and contains the UUID
-    const path = extensionLine.slice(extensionLine.indexOf(basePath));
-    let file = Gio.File.new_for_path(path);
+    let path = extensionLine.slice(extensionLine.indexOf(basePath));
 
     // Walk up the directory tree, looking for an extension with
     // the same UUID as a directory name.
-    while (file != null) {
-        let extension = extensionManager.lookup(file.get_basename());
+    do {
+        path = GLib.path_get_dirname(path);
+
+        const dirName = GLib.path_get_basename(path);
+        const extension = extensionManager.lookup(dirName);
         if (extension !== undefined)
             return extension;
-        file = file.get_parent();
-    }
+    } while (path !== '/');
 
     return null;
 }